package com.howard.utils;

import java.math.BigDecimal;

/**
 * BigDecimal 类运算工具类
 * @author <a href="mailto:howard.he0329@gmail.com">Howard.He</a>
 *
 */
public final class BigDecimalUtils {

	// private
	private BigDecimalUtils() {
	}

	/**
	 * add ex: a1 + a2
	 *
	 * @param BigDecimal
	 *            a1
	 * @param BigDecimal
	 *            a2
	 * @return BigDecimal a1 + a2
	 */
	public static BigDecimal add(BigDecimal a1, BigDecimal a2) {
		return a1.add(a2);
	}

	/**
	 * add ex: d1 + d2
	 *
	 * @param double d1
	 * @param double d2
	 * @return BigDecimal d1 + d2
	 */
	public static BigDecimal add(double d1, double d2) {
		BigDecimal _b1 = BigDecimal.valueOf(d1);
		BigDecimal _b2 = BigDecimal.valueOf(d2);
		return add(_b1, _b2);
	}

	/**
	 * s1+ s2
	 *
	 * @param String
	 *            s1
	 * @param String
	 *            s2
	 * @return BigDecimal
	 */
	public static BigDecimal add(String s1, String s2) {
		BigDecimal _s1 = new BigDecimal(s1);
		BigDecimal _s2 = new BigDecimal(s2);
		return add(_s1, _s2);
	}

	/**
	 * subtract a1 - a2
	 *
	 * @param BigDecimal
	 *            a1
	 * @param BigDecimal
	 *            a2
	 * @return BigDecimal
	 */
	public static BigDecimal subtract(BigDecimal a1, BigDecimal a2) {
		return a1.subtract(a2);
	}

	/**
	 * subtract d1 - d2
	 *
	 * @param double d1
	 * @param double d2
	 * @return BigDecimal
	 */
	public static BigDecimal subtract(double d1, double d2) {
		BigDecimal _d1 = BigDecimal.valueOf(d1);
		BigDecimal _d2 = BigDecimal.valueOf(d2);
		return subtract(_d1, _d2);
	}

	/**
	 * s1 - s2
	 *
	 * @param String
	 *            s1
	 * @param String
	 *            s2
	 * @return BigDecimal
	 */
	public static BigDecimal subtract(String s1, String s2) {
		BigDecimal _s1 = new BigDecimal(s1);
		BigDecimal _s2 = new BigDecimal(s2);
		return subtract(_s1, _s2);
	}
}
